#ifndef TARGET_H
#define TARGET_H

#include <map>
#include <vector>
#include "Location.h"

struct State;

class Target
{
    public:
        /** Default constructor */
        Target();

        /* types definition */
        typedef std::map<Ant,Food> AntFoodMap;
        typedef std::vector<Food> FoodVector;
        typedef std::vector<Ant> AntVector;
        typedef std::vector<Task> TaskVector;


        void add(const Ant& ant, const Food& food);
        void del(const Ant& ant);
        void doMoveAnt(const Ant& old, const Ant& newant);
        void clear(const AntVector& ant, const FoodVector& food);

        bool isAssigned(const Food& food) const;
        bool hasTask(const Ant& ant) const;

//        int getDirection(const Ant& ant, const State* state) const;
    protected:
    private:

        AntFoodMap m_food;
        FoodVector food_targets;

};

#endif // TARGET_H
